将所有者附加到项目(Django)

我是Django的新手,所以这可能是一个非常简单的答案,但是我实质上是使用Django创建一个ebay类型的网站。

我可以创建项目,但是我试图让所有者加入该项目。这是商品的模型:

class Item(models.Model):
    item_name = models.CharField(max_length=50)
    item_description = models.TextField(blank=True,null=True)
    brand = models.CharField(max_length=50,blank=True,null=True)
    size = models.IntegerField()
    original_price = models.IntegerField()
    image = models.ImageField(upload_to="img")
    date_added = models.DateTimeField(auto_now_add=True)
    owner = models.ForeignKey(UserProfile,related_name="items",on_delete=models.CASCADE)

有人告诉我现在需要将所有者添加到该项目中,但是我一直在努力了解其方式或位置。 我认为这是在应用程序的views.py文件中,但是摆弄它被证明是不成功的。 这是我的观点:

def create_item(request):   
    if request.method == "POST":
        form = NewItemForm(request.POST)
        owner = request.user
        if form.is_valid():
            item = form.save()
            return redirect(get_items)
    else:
        form = NewItemForm()
    return render(request,'newitemform.html',{'form' : form})

我认为这是item = form.save()下面的item.append(owner),但这似乎不起作用。

任何帮助将不胜感激!

d459462473 回答:将所有者附加到项目(Django)

您几乎做到了!

您的Item实体已经具有类型owner的{​​{1}}属性,因此您只需要设置此属性即可。

尝试以下代码:

UserProfile
,

您可以执行form.save(commit=False)来创建项目对象,而无需实际保存它,然后添加item.owner = owner

def create_item(request):   
if request.method == "POST":
    form = NewItemForm(request.POST)
    owner = request.user
    if form.is_valid():
        item = form.save(commit=False)
        item.owner = owner
        item.save()
        return redirect(get_items)
else:
    form = NewItemForm()
return render(request,'newitemform.html',{'form' : form})
本文链接:https://www.f2er.com/3093612.html

大家都在问