django-tastypie 如何在 id 中分配默认值

django-tastypie how to assign default value in id

tastypie 我想通过调用任何其他函数来分配 id 在 api.py class 用户资源(模型资源): class 用户资源(模型资源):

class Meta:
    collection_name="data"
    queryset = User.objects.all()
    resource_name = 'user'
    authorization = Authorization()


def dehydrate(self, bundle):
    bundle.data['user_id'] = "1"  # want to call one function here
    return bundle

但这不起作用,错误是

IntegrityError at /v0/user
(1048, "Column 'user_id' cannot be null")

我的型号代码

class User(models.Model):
    user_id = models.IntegerField(primary_key=True)
    mobile_country_code = models.CharField(max_length=10L, blank=True)
    mobile_no = models.CharField(max_length=15L)
    email = models.CharField(max_length=75L, blank=True)
    email_phone = models.CharField(max_length=75L, blank=True)
    gcm_regid = models.TextField()
class Meta:
    db_table = 'users'

如何调用一个函数从其他函数获取 ID table

我假设您正在尝试向用户发送 POST/PUT/PATCH 请求。您的问题是您使用的是 dehydrate 而不是 hydrate.

Hydrate 适用于修改从用户那里收到并将被保存的负载。

Dehydrate 适用于修改将返回给用户的负载。

因为我假设您正在尝试写入数据,所以您的 dehydrate 永远不会被调用,直到您已经保存了您的用户。

Docs for the hydrate cycle