大家好,我正在建立一個電子商務網站,在某一點上卡住了,我有兩個模型賣方和產品,如下:
class Seller(models.Model)。
seller = models.OneToOneField(User, on_delete=models.CASCADE)
city = models.CharField(max_length=30)
country = models.CharField(max_length=30)
phone_number = PhoneNumberField()
email = models.EmailField(max_length=300)
def __str__(self):
return self.seller.username
class Product(models.Model)。
status_choices = [
('New', 'New') 。
('New', 'Used'),
]
image = models.ImageField(default='dev1.jpg'/span>, upload_to='images/')
condition = models.CharField(choice=STATUS_CHOICES, max_length=10)
seller = models.ForeignKey(Seller, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
描述 = models.TextField()
價格 = models.CharField(max_length=15)
location = models.CharField(max_length=30)
posted_on = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
現在我有一個表單來保存新的產品為:
class SellProductForm(forms.ModelForm)。
class Meta:
模型 = 產品
fields = ('image', 'condition', 'title', '描述', '價格', '位置', )
問題出在views.py:
@login_required。
def sell(request)。
form = SellProductForm()
if request.method == 'POST'/span>:
form = SellProductForm(request.POST)
if form.is_valid()。
print('OK')
instance = form.save(commit=False)
instance.seller = request.user
instance.save()
return redirect('index')
背景關系 = {
'form': form,
}
return render(request, 'myapp/sell.html'/span>, context)
在最后,我得到了ERROR。 "Product.seller必須是一個Seller實體"。 我理解這個需求,但我無法讓自己想象代碼并想出一個解決方案,因為我給它的是一個用戶實體,而不是一個賣家實體。
uj5u.com熱心網友回復:
因為它是一個OneToOneField,你可以通過user.seller獲得User物件的相關Seller模型,所以在這個例子中:
instance.seller = request.user.seller
如果沒有Seller鏈接到登錄的用戶,這將引發一個AttributeError。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/323516.html
標籤:
上一篇:cgb2108-day13
