1

总的来说,我对 django-tastypie 和 django 还是很陌生。我在使用tastypie. 我有一个带有附加字段的配置文件,并与带有OneToOneField. 我的客户端表单将与所有必要的数据一起提交,以创建一个新的 UserPOSTUserResource.

模型.py

class Profile(models.Model):
    USER_TYPE_CHOICES = (
        ('A', 'Agent'),
        ('U', 'User'),
    )
    user = models.OneToOneField(User)
    type = models.CharField(max_length=1, choices=USER_TYPE_CHOICES, default='U')
    middle_name = models.CharField(blank=True, default='', max_length=100)
    created_on = models.DateTimeField(default=datetime.now())
    updated_on = models.DateTimeField(editable=False, auto_now=True, auto_now_add=True)

    def __unicode__(self):
        return '%s' % (self.username)

    def __save__(self, *args, **kwargs):
        self.updated_on = datetime.now()
        super(Profile, self).save()


def create_user_profile(sender, instance, created, **kwargs):
    if created:
        profile, created = Profile.objects.get_or_create(user=instance)

models.signals.post_save.connect(create_user_profile, sender=User)

api.py

class ProfileResource(ModelResource):
    class Meta:
        queryset = Profile.objects.all()
        resource_name = 'profile'
        excludes = ['updated_on', 'created_on']
        filtering = {
            'email': ALL,
            'type': ALL,
        }


class UserResource(ModelResource):
    profile = fields.ToOneField(ProfileResource, 'profile', full=True)
    class Meta:
        queryset = User.objects.all()
        resource_name = 'user'
        excludes = ['password', 'is_active', 'is_staff', 'is_superuser', 'date_joined', 'last_login']
        filtering = {
            'username': ALL,
            'email': ALL,
        }

如何以填充Profile和的方式准备 POST 请求中的数据User?而且,模型与ForeignKeyManyToMany关系如何?

4

0 回答 0