Tôi xin lỗi nếu câu hỏi của tôi hóa ra là ngớ ngẩn, nhưng tôi khá mới với Django, và tôi không thể tìm thấy câu trả lời ở bất cứ đâu.Mô hình Django - chỉ định id thay vì đối tượng
tôi có mô hình sau:
class BlackListEntry(models.Model):
user_banned = models.ForeignKey(auth.models.User,related_name="user_banned")
user_banning = models.ForeignKey(auth.models.User,related_name="user_banning")
Bây giờ, khi tôi cố gắng để tạo ra một đối tượng như thế này:
BlackListEntry.objects.create(user_banned=int(user_id),user_banning=int(banning_id))
tôi nhận được một lỗi sau:
Cannot assign "1": "BlackListEntry.user_banned" must be a "User" instance.
Trong số Tất nhiên, nếu tôi thay thế nó bằng một cái gì đó như thế này:
user_banned = User.objects.get(pk=user_id)
user_banning = User.objects.get(pk=banning_id)
BlackListEntry.objects.create(user_banned=user_banned,user_banning=user_banning)
mọi thứ hoạt động tốt. Câu hỏi là:
Giải pháp của tôi có nhấn vào cơ sở dữ liệu để truy xuất cả người dùng hay không và nếu có, có thể tránh nó không, chỉ cần chuyển id?
Điều này cho tôi: 'user_banning__id' là đối số từ khóa không hợp lệ cho hàm này –
Tôi rất tiếc, tôi vừa mới nhận ra bạn đang tạo đối tượng. Vì vậy, bạn cần truy cập bằng một dấu gạch dưới đơn. Tôi sẽ chỉnh sửa câu trả lời của mình để giải thích tại sao. – Francisco
Cảm ơn, bây giờ nó hoạt động. Tôi sẽ thêm bạn +1, nhưng tôi quá n00bly để làm điều đó được nêu ra. –