Python 如何知道模型中是否有用户

Python 如何知道模型中是否有用户,python,django,django-models,django-forms,django-views,Python,Django,Django Models,Django Forms,Django Views,我一直在尝试创建一个视图,允许用户创建一个“配置文件”,但是如果用户已经有一个配置文件,那么用户将被重定向到用户可以查看其他人配置文件的页面(为了查看其他人的配置文件,用户必须根据需要创建一个配置文件),为此,我有两个模板,一个具有创建配置文件的表单,另一个显示其他用户的配置文件。错误在于,每个用户都被重定向到mates-form.html,即使是那些已经有配置文件的用户。到目前为止,我认为错误在views.py文件上 models.py class Mates(models.Model

我一直在尝试创建一个视图,允许用户创建一个“配置文件”,但是如果用户已经有一个配置文件,那么用户将被重定向到用户可以查看其他人配置文件的页面(为了查看其他人的配置文件,用户必须根据需要创建一个配置文件),为此,我有两个模板,一个具有创建配置文件的表单,另一个显示其他用户的配置文件。错误在于,每个用户都被重定向到mates-form.html,即使是那些已经有配置文件的用户。到目前为止,我认为错误在views.py文件上

models.py

    class Mates(models.Model):
        user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='usermates')
        users_requests = models.ManyToManyField(User, related_name="users_requests")
        req_bio = models.CharField(max_length=400)
        req_image = models.ImageField(upload_to='requestmates_pics', null=True, blank=True, default=False)
views.py

    def matesmain(request):
        contents = Mates.objects.all()
        if contents == request.user:
            context = {
                'contents': contents,
                'form_mates': MatesForm(),
            }
            print("nice3")
            return render(request, 'mates.html', context)
        else:
            return render(request,  'mates-form.html')

    def mates(request):
        if request.method == 'POST':
            form_mates = MatesForm(request.POST, request.FILES)
            if form_mates.is_valid():
                instance = form_mates.save(commit=False)
                instance.user = request.user
                instance.save()
                return redirect('mates-main')
                print('succesfully uploded')

        else:
            form_mates = MatesForm()
            print('didnt upload')
        context = {
               'form_mates': form_mates,
               'contents': Mates.objects.all()
        }
        return render(request, 'mates-form.html', context)
forms.py

    class MatesForm(forms.ModelForm):
        class Meta:
            model = Mates
            fields = ('req_bio', 'req_image',)
            exclude = ['user']
mates.html

    {% if contents %}
        {% for content in contents %}
            Here is where the user can see other user's profiles
        {% endfor %}
    {% endif %}
mates-form.html

    <form method="post" enctype="multipart/form-data">
        {{ form_mates.as_p }}
    </form>

{{form_mates.as_p}

如果您有任何问题或需要查看更多代码,请在评论中告诉我,此外,我还想到了其他方法,从matesmain视图中删除if语句,并在html上使用它们,但这不起作用。

我想用户将只有一个配置文件,而不是
ManyToOneRelation
,即
ForeignKey
使用
OneToOneRelation
与用户模型更好

 class Mates(models.Model):
        user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='usermates')
现在,在创建配置文件时,您可以检查用户配置文件是否已存在,如下所示:

def mates(request):
     if Mates.objects.filter(user=request.user).exists():
         return redirect('redirect_to_some_view_you_want') 
     if request.method == 'POST':
         form_mates = MatesForm(request.POST, request.FILES)