python - 从配置文件模型中获取用户实例
问题描述
大家好,好吧我正在建立一个电子商务网站并卡在某个点上,我有两个模型卖家和产品,如下:
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', upload_to='images/')
condition = models.CharField(choices=STATUS_CHOICES, max_length=10)
seller = models.ForeignKey(Seller, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
description = models.TextField()
price = 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:
model = Product
fields = ('image', 'condition', 'title', 'description', 'price', 'location', )
问题出在views.py中:
@login_required
def sell(request):
form = SellProductForm()
if request.method == 'POST':
form = SellProductForm(request.POST)
if form.is_valid():
print('Ok')
instance = form.save(commit=False)
instance.seller = request.user
instance.save()
return redirect('index')
context = {
'form': form,
}
return render(request, 'myapp/sell.html', context)
最后,我得到错误:“Product.seller must be a Seller instance。” 我理解需求,但我无法让自己想象代码并提出解决方案,因为我给它的是用户实例而不是卖家实例。
解决方案
既然是 a ,就可以用 获取对象OneToOneField
的相关Seller
模型,所以在这种情况下:User
user.seller
instance.seller = request.user.seller
这将引发一个AttributeError
if noSeller
链接到登录用户。
推荐阅读
- typescript - DataSnapshot' 已声明,但其值永远不会被读取。ts(6133)
- c++ - Why can an enumeration inside class A (public) be accessed in class B using scope operator and class A name?
- java - 在onedrive中上传文件时触发azure容器注册表中的java函数以输出文件内容
- sqlite - 更改在 Kubernetes Pod 中运行的 SQLite 的默认存储位置
- google-play-console - How to publish an Alpha Internal Track app version from AppCenter to PlayStore
- java - Is there a way to put some images in an array (values)?
- regex - Looking for a fix in my RegEx to parse the correct value
- visual-studio-2013 - Visual Studio: Load SQL file from SQL Studio Unit Test
- ibm-doors - How to get dxl scripts to run faster
- css - CSS Grid Navigaton Bar - How to properly add Button Separators?