cuốn sách gpt4 ai đã làm

Cách lưu các giá trị mảng json được phân tích cú pháp vào cơ sở dữ liệu trong django python Rest api bằng models.py, serializers.py và view.py

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 20:08:05 27 4
mua khóa gpt4 Nike

Tôi muốn lưu các danh mục và danh mục con của chúng vào cơ sở dữ liệu, ở đây mỗi danh mục có nhiều danh mục con. Bạn có thể giúp tôi lưu người dùng, danh mục và nhiều danh mục phụ tương ứng với danh mục đó không? Models.py, Serializers.py, Views.py và nối thêm các yêu cầu gửi đến.

model.py

lớp SavingCategoryandPreferences(models.Model):

người dùng = models.ForeignKey(Người dùng, liên quan_name='người dùng')
news_category = models.ForeignKey(NewsCategory)
subcategories= models.ManyToManyField(NewsSubCategory, liên quan_name='sub')
Sort_order = models.IntegerField(default=0)
slug = AutoSlugField(populate_from='subcategories_id', Separator='', editable=True)
đã tạo_time = models.DateTimeField("Ngày tạo", auto_now_add=True)

serializer.py

lớp MobilecatsubSerializer(serializers.ModelSerializer):
lớp Meta:
mô hình = SavingCategoryandPreferences
lĩnh vực = ('id', 'người dùng', 'danh mục phụ', 'news_category',)

Lượt xem.py

lớp MobileCatsubViewswt(viewsets.ModelViewSet):
serializer_class = serializers.MobilecatsubSerializer
bộ truy vấn = SavingCategoryandPreferences.objects.all()

yêu cầu đến

{
"người dùng:"39",
"news_category://22",
"danh mục con": [
{"sub_id:"1"},
{"sub_id:"2"}
]
}

câu trả lời hay nhất

Theo mặc định, DRF serializers.ModelSerializer Xác định tất cả các trường có liên quan như Trường khóa chính có liên quan. Đối với mối quan hệ nhiều cặp (nhiều=Đúng), nghĩa là đảo ngược FK hoặc nhiều-nhiều, màngầmTạo một Nhiều trường liên quan ví dụ trong đó trường ban đầu (trong trường hợp này Trường khóa chính có liên quan) được để lại dưới dạng quan_con_con Thuộc tính sơ thẩm, nằm trong Nhiều trường liên quan to_internal_value được sử dụng trong phương pháp Việc xác thực thực sự được thực hiện trên mỗi mục đến (trong trường hợp này là khóa chính) được chuyển vào dưới dạng thành phần danh sách của trường.

Câu lệnh trên rất dài, bạn chỉ có thể chuyển những câu có liên quan trong danh sách Tin tứcDanh mục phụ Ví dụ, khóa chính của phiên bản:

{
"người dùng:"39",
"news_category://22",
"danh mục con": [1, 2]
}

Bạn thậm chí có thể chuyển khóa chính dưới dạng chuỗi.

Bây giờ, nếu bạn không có quyền kiểm soát cách truyền dữ liệu và định dạng, bạn có thể ghi đè MobilecatsubSerializer của to_internal_value Phương pháp trích xuất khóa chính từ dữ liệu đầu vào và cập nhật dữ liệu đầu vào với chúngmệnh lệnh,例如:

lớp MobilecatsubSerializer(serializers.ModelSerializer):

lớp Meta:
mô hình = SavingCategoryandPreferences
lĩnh vực = ('id', 'người dùng', 'danh mục phụ', 'news_category',)

def to_internal_value(tự, dữ liệu):
nếu 'danh mục con' trong dữ liệu:
# Thay đổi điều này nếu cần
thư rác = [dct['sub_id'] cho dct trong dữ liệu['subcategories']]
data.update(subcategories=subcategories)
trả về super().to_internal_value(data)

Nếu bạn cảm thấy quá tham vọng, bạn có thể tiếp tục và ghi đè Trường khóa chính có liên quan của to_internal_value (hoặc bất kỳ phương thức nào bạn sử dụng cho trường) để thực hiện tuần tự hóa giá trị ở đó, nhưng đó sẽ là một ý tưởng tồi vì tất cả các trình tuần tự hóa khác có PrimaryKeyRelationField cũng sẽ cần phải thực hiện quá trình này một cách không cần thiết. Tuy nhiên, nếu vì lý do nào đó bạn muốn đi theo con đường này thì tốt hơn hết bạn nên Trường khóa chính có liên quan Phân lớp, ghi đè tuần tự hóa như tôi đã làm ở trên to_internal_value và đặt rõ ràng giá trị này là tiểu thể loại Trình tuần tự hóa cho các trường.

Về python - Cách lưu các giá trị mảng json được phân tích cú pháp vào cơ sở dữ liệu trong django python Rest api bằng models.py, serializers.py và view.py, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/58854468/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress