[英]Django: unable to save model - Err: "id" expected a number but got <django.db.models.fields.related.ForeignKey...>
我真的沒有想法,我嘗試了一切。 基本上我只是想保存一些項目,而owner
是與默認 Django User
模型相關的外鍵。 同樣的方法適用於關聯相同的其他視圖和模型。 但在這里我得到這個錯誤:
Exception Type: TypeError
Exception Value:
Field 'id' expected a number but got <django.db.models.fields.related.ForeignKey: owner>.
這是我的模型:
class User(AbstractUser):
pass
""" ... """
class Item(TimeStampMixin):
title = models.CharField(max_length=40)
owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name="Items")
last_bidder = models.ForeignKey(User, on_delete=models.DO_NOTHING, related_name="bidded_objects", default=owner)
etc=etc...
這是我的看法:
class Form_New_Item(ModelForm):
class Meta:
model = Item
fields = ['title', 'description', 'price', 'category', 'image_url']
def create_new_item(request):
if request.user.is_authenticated and request.method == "POST":
form = Form_New_Item(request.POST)
user = request.user
if form.is_valid():
new_item = Item(
owner=user,
title=form.cleaned_data['title'],
etc=etc...,
)
new_item.save()
return HttpResponseRedirect(reverse("index"))
請注意,當我調用new_item.save()
時會發生錯誤:
提前感謝您為我提供的任何幫助。
我剛剛解決了它,我應該在示例中提供整個 Item 類,對此感到抱歉(我只是編輯了第一條消息),現在我更清楚地看到了錯誤在哪里:
我有一個依賴於另一個屬性的類的屬性。
owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name="listings")
last_bidder = models.ForeignKey(User, on_delete=models.DO_NOTHING, related_name="bidded_objects", default=owner)
因此,您會看到第二個屬性last_bidder
默認具有第一個owner
。
盡管錯誤 Django 報告似乎與owner
財產有關,但問題出在last_bidder
之一。
我通過設置null=True
而不是第一個屬性的默認值來解決它:
last_bidder = models.ForeignKey(User, on_delete=models.DO_NOTHING, related_name="bidded_objects", null=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.