Django Tastypie ToOneField不工作

Django Tastypie ToOneField不工作,django,tastypie,Django,Tastypie,我的模型: 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.

我的模型:

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”:“模型“”具有空属性'hypo',不允许空值。”}


我已经查看了数据,没有空值。

如果在模型中为空值指定默认值,该怎么办

user=models.OneToOneField(UserDetails, on_delete=models.SET_NULL, null=True, blank=True)

如果在模型中为null指定默认值会怎么样

user=models.OneToOneField(UserDetails, on_delete=models.SET_NULL, null=True, blank=True)

这里的问题是UserResource中的属性“hypo”。 根据文档属性,表示:

命名由资源包装的对象的实例属性的字符串。该属性将在脱水过程中访问或在水合物生成过程中写入

因此,在您的UserResource中,“hypo”不是一个属性,“problem”是正确的属性(指您的模型)

因此,更改UserResource中的属性可以解决问题:

class UserResource(ModelResource):
    hypo=fields.ToOneField(ProblemResource,'problem')
    class Meta:
        queryset=UserDetails.objects.all()
        resource_name="user"

阅读更多信息:

这里的问题是UserResource中的属性“hypo”。 根据文档属性,表示:

命名由资源包装的对象的实例属性的字符串。该属性将在脱水过程中访问或在水合物生成过程中写入

因此,在您的UserResource中,“hypo”不是一个属性,“problem”是正确的属性(指您的模型)

因此,更改UserResource中的属性可以解决问题:

class UserResource(ModelResource):
    hypo=fields.ToOneField(ProblemResource,'problem')
    class Meta:
        queryset=UserDetails.objects.all()
        resource_name="user"

阅读更多信息:

我只需在问题模型中提供
相关的
就可以解决问题

class Problem(models.Model):
   user=models.OneToOneField(UserDetails,related_name='hypo')
   onset_time=models.CharField(max_length=20)
   symptoms=models.CharField(max_length=50)

有更多关于相关名称标签的详细信息。

我只需在问题模型中提供
related\u 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)

有更多关于相关名称标签的详细信息。

我认为问题在于“UserResource”而不是“problem”模型尝试了您的解决方案,但仍然出现了相同的错误我认为问题在于“UserResource”而不是“problem”模型尝试了您的解决方案,但仍然出现了相同的错误这解决了吗?这解决了吗?