attributeError:'语言'对象没有属性。

发布于 2025-02-11 05:59:14 字数 1896 浏览 2 评论 0原文

我的模型看起来像这样:

首先具有用户配置文件

class UserProfile(models.Model):
    """user profiling """
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    location = models.CharField(max_length=255)
    languages = models.ManyToManyField('Language', through="UserLanguage")

,然后拥有一种语言,许多人与许多关系

class Language(models.Model):
    name = models.CharField(max_length=50)

然后有一个贯穿表来存储此数据

class UserLanguage(models.Model):
    language = models.ForeignKey(Language, on_delete=models.CASCADE)
    user_profile = models.ForeignKey(UserProfile, on_delete=models.CASCADE)

    class ProficiencyStatus(models.TextChoices):
        FLUENT = 'FL', _('FLUENT')
        CONSERVATION = 'CT', _('CONSERVATIONAL')

    lang_proficiency = models.CharField(
        max_length=2,
        choices=ProficiencyStatus.choices,
        default=ProficiencyStatus.FLUENT,
    )

现在发行是当我在此表中插入数据时,例如

language_obj = Language.objects.create(name=language.get('name'))
user_lang_obj = UserLanguage.objects.create(language=language_obj,
                                                            user_profile=user_profile, lang_proficiency='FL')
   
user_profile.languages.add(language_obj)

attributeError:'Language'对象没有属性'lang_profofication'

编辑: 我的序列化器就是这样

class LanguageSerializer(serializers.ModelSerializer):
    lang_proficiency = serializers.CharField(required=True)
    name = serializers.CharField(required=True)
    class Meta:
        model = UserLanguage
        fields = ('name', 'lang_proficiency')

,我对语言的有效载荷就是这样:

"languages" :[{"name":"arabic" ,"lang_proficiency":"FL"},{"name":"english","lang_proficiency":"FL"}],

My models look like these :

first have user profile

class UserProfile(models.Model):
    """user profiling """
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    location = models.CharField(max_length=255)
    languages = models.ManyToManyField('Language', through="UserLanguage")

then have a language many to many relation

class Language(models.Model):
    name = models.CharField(max_length=50)

then have a through table to store this data

class UserLanguage(models.Model):
    language = models.ForeignKey(Language, on_delete=models.CASCADE)
    user_profile = models.ForeignKey(UserProfile, on_delete=models.CASCADE)

    class ProficiencyStatus(models.TextChoices):
        FLUENT = 'FL', _('FLUENT')
        CONSERVATION = 'CT', _('CONSERVATIONAL')

    lang_proficiency = models.CharField(
        max_length=2,
        choices=ProficiencyStatus.choices,
        default=ProficiencyStatus.FLUENT,
    )

now issue is when I am inserting data in this table like :

language_obj = Language.objects.create(name=language.get('name'))
user_lang_obj = UserLanguage.objects.create(language=language_obj,
                                                            user_profile=user_profile, lang_proficiency='FL')
   
user_profile.languages.add(language_obj)

I am getting error like:

AttributeError: 'Language' object has no attribute 'lang_proficiency'

EDIT:
My serializer is like this

class LanguageSerializer(serializers.ModelSerializer):
    lang_proficiency = serializers.CharField(required=True)
    name = serializers.CharField(required=True)
    class Meta:
        model = UserLanguage
        fields = ('name', 'lang_proficiency')

And my payload for language is like this :

"languages" :[{"name":"arabic" ,"lang_proficiency":"FL"},{"name":"english","lang_proficiency":"FL"}],

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文