【问题标题】:TastyPie Foreignkey troubleTastyPie外键麻烦
【发布时间】:2015-05-07 14:24:53
【问题描述】:

我正在使用没有自定义代码的 django.contrib.auth.models.User 模型类,并且我也有以下模型:

class XYZ(models.Model):
      xyzstring = models.TextField()
      created_by = models.ForeignKey(User)

资源类如下:

class UserResource(ModelResource):
    class Meta:
         queryset = User.objects.all()
         resource_name = 'user'
         excludes = ['email', 'password', 'is_active', 'is_staff', 'is_superuser']
        filtering = {
           'username': ALL,
         }

class XYZResource(ModelResource):
    created_by = fields.ForeignKey(UserResource, 'user', full=True)
    class Meta:
        queryset = XYZ.objects.all()
        resource_name = 'xyz'
        allowed_methods = ['get','post','put']
        details_uri_name= 'id'
        paginator_class = Paginator

当我转到 /api/v1/xyz/ 时出现错误:

模型 'XYZ' 有一个空属性 'user' 并且不允许空值。

数据库在 xyz 表的 created_by 列中有有效的用户 ID。如果我删除了 XYZResource 中的 created_by 行,我根本不会得到 created_by 属性。 created_by 不会采用空值,因为 XYZ 对象是由有效用户创建的。

请建议我应该如何解决这个问题

【问题讨论】:

    标签: tastypie


    【解决方案1】:

    伙计们非常感谢你们试图帮助我。出于沮丧,我用“created_by”替换了以下行中的“用户”,它成功了!!

    created_by = fields.ForeignKey(UserResource, 'user', full=True)

    created_by = fields.ForeignKey(UserResource, 'created_by', full=True)

    【讨论】:

    • 我真的希望 TastyPie 能更好地记录这一点。文档有很多示例,然后无法解释关键术语,或者将引用模型结构而不显示模型。真令人沮丧。很高兴我找到了您的解决方案。
    【解决方案2】:

    更改 created_by 字段以允许空值

    created_by = fields.ForeignKey(UserResource, 'user', full=True, null=True)
    

    【讨论】:

    • 不会只显示空值而不是用户名吗?显然 bocode 想要查看用户名
    • 与模型定义相同。如果 null=True,如果值没有被填满,它不会报错。这似乎是导致错误的原因。
    猜你喜欢
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    • 2010-11-11
    • 2011-06-12
    相关资源
    最近更新 更多