Python 在Django中创建对象时,将当前登录的用户设置为模型中的用户

Python 在Django中创建对象时,将当前登录的用户设置为模型中的用户,python,django,django-models,django-forms,modelform,Python,Django,Django Models,Django Forms,Modelform,我试着实现我在这里看到的其他一些帖子提供的解决方案,但似乎没有任何效果。我是django和后端的新手,所以我可能只是缺乏技能 情况是,我让用户使用ModelForm基于django模型生成一个列表。除了我无法将当前登录的用户设置为列表的用户之外,一切似乎都正常。我知道该用户存储在request.user中,但我似乎无法在我的表单中设置该用户,我始终会遇到以下错误: IntegrityError at/create 非空约束失败:拍卖物品。物品\u用户\u id 以下是我的用户和列表模型的代码:

我试着实现我在这里看到的其他一些帖子提供的解决方案,但似乎没有任何效果。我是django和后端的新手,所以我可能只是缺乏技能

情况是,我让用户使用ModelForm基于django模型生成一个
列表
。除了我无法将当前登录的用户设置为
列表
的用户之外,一切似乎都正常。我知道该用户存储在
request.user
中,但我似乎无法在我的表单中设置该用户,我始终会遇到以下错误:

IntegrityError at/create

非空约束失败:拍卖物品。物品\u用户\u id

以下是我的用户和列表模型的代码:

class User(AbstractUser):
    pass

class Listings(models.Model):
    title = models.CharField(max_length=64, default="")
    description = models.TextField(default="")
    image = models.URLField(blank=True, null=True)
    initial_bid = models.DecimalField(max_digits=8, decimal_places=2)
    category = models.CharField(max_length=64, default="Misc") 
    listing_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="listing_user")
    # listing.bid.all()????
这是我的表格:

from .models import Listings

class ListingsForm(forms.ModelForm):

    class Meta:
        model = Listings
        exclude = ('listing_user')
        fields = [
            'title',
            'description',
            'image',
            'initial_bid',
            'category'
        ]
我发现的一些建议表明,我可以排除用户需求,然后在我的视图中自行设置,但每当我尝试排除
列表用户时,我都会遇到以下错误:

TypeError:ListingsForm.Meta.exclude不能是字符串。您的意思是键入:('listing_user',)?

尝试所建议的方法也无济于事

最后,我的观点是:

def create(request):
    
    form = ListingsForm(request.POST or None)  
    if form.is_valid():
        form.save()
        form = ListingsForm()

    context = {
        'form': form
    }
    return render(request, "auctions/create.html", context)

排除应该是一个列表元组。您有两个选择:

exclude = ('listing_user',)
or
exclude = ['listing_user']
表格:

from .models import Listings

class ListingsForm(forms.ModelForm):

    class Meta:
        model = Listings
        exclude = ('listing_user',)
        fields = [
            'title',
            'description',
            'image',
            'initial_bid',
            'category'
        ]
观点:

def create(request):
    
    form = ListingsForm(request.POST or None)  
    if form.is_valid():
        form.instance.listing_user = request.user
        form.save()
        form = ListingsForm()

    context = {
        'form': form
    }
    return render(request, "auctions/create.html", context)

非常感谢。我需要研究
form.instance
做了什么,因为我确实做了类似的事情,但显然缺少了关键组件。