簡體   English   中英

DJANGO - profile.user 的反向訪問器與同一字段的反向訪問器沖突?

[英]DJANGO - reverse accessor for profile.user clashes with reverse accessor for same field?

我收到以下錯誤:

    dsapi.Profile.user: (fields.E304) Reverse accessor for 'Profile.user' clashes with reverse accessor for 'Profile.user'.
        HINT: Add or change a related_name argument to the definition for 'Profile.user' or 'Profile.user'.
dsapi.Profile.user: (fields.E305) Reverse query name for 'Profile.user' clashes with reverse query name for 'Profile.user'.

我的所有研究都表明可以為每個問題創建一個related_name 但就我而言,它告訴我反向訪問器本身存在問題。 有人在這里有什么想法嗎? 下面是我的 models.py 文件中有問題的代碼。

import uuid
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver


class DsapiModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    created_at = models.DateTimeField(auto_now_add=True, editable=False)
    updated_at = models.DateTimeField(auto_now=True, editable=False)

    class Meta:
        abstract = True

class Profile(DsapiModel):
    """
    Extend User model using one-to-one link
    Save a query using users = User.objects.all().select_related('profile')
    """
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    favorite_sites = models.ManyToManyField(Site)

    def __str__(self):
        return self.user.username


@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)


@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
    instance.profile.save()

該錯誤表明您的項目中存在多個Profile <-> User關系。

任意,您可以在它們之間建立盡可能多的關系,但是,它們的related_name必須不同。

這是一篇可以幫助您了解related_name的SO帖子

  1. related_name中的相關名稱是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM