我的模特:
class UserDetails(models.Model):
user=models.ForeignKey(User)
email=models.CharField(max_length=30)
name=models.CharField(max_length=30)
class Problem(models.Model):
user=models.OneToOneField(UserDetails)
onset_time=models.CharField(max_length=20)
symptoms=models.CharField(max_length=50)
资源:
class ProblemResource(ModelResource):
class Meta:
queryset=Problem.objects.all()
resource_name="hypo"
class UserResource(ModelResource):
hypo=fields.ToOneField(ProblemResource,'hypo')
class Meta:
queryset=UserDetails.objects.all()
resource_name="user"
我想使用'/ user'api调用来获取特定用户的问题,但我收到此错误: -
{“error”:“模型'< UserDetails:UserDetails对象>'有一个空属性'hypo'并且不允许空值。“}
我已经浏览了数据并且没有空值。
答案 0 :(得分:0)
如果在模型中指定null的默认值,该怎么办?
user=models.OneToOneField(UserDetails, on_delete=models.SET_NULL, null=True, blank=True)
答案 1 :(得分:0)
这里的问题是UserResource中的属性'hypo'。 根据docs属性意味着:
一个字符串,命名由Resource包装的对象的实例属性。该属性将在脱水过程中被访问或在水合物期间被写入。
所以在你的情况下,在UserResource中,'hypo'不是属性,'problem'是正确的属性(引用你的模型)。
因此,更改UserResource中的属性可以解决问题:
class UserResource(ModelResource):
hypo=fields.ToOneField(ProblemResource,'problem')
class Meta:
queryset=UserDetails.objects.all()
resource_name="user"
了解详情:http://django-tastypie.readthedocs.io/en/latest/fields.html#common-field-options
答案 2 :(得分:0)
我能够通过在问题模型
中提供related_name='hypo'
来解决问题
class Problem(models.Model):
user=models.OneToOneField(UserDetails,related_name='hypo')
onset_time=models.CharField(max_length=20)
symptoms=models.CharField(max_length=50)
Django documentation包含有关related_name标记的更多详细信息。