2015-04-28 3 views
0

tastypie я хочу, чтобы назначить идентификатор с вызовом любой другой функции в api.py класса UserResource (ModelResource): класс UserResource (ModelResource):Джанго-tastypie как присвоить значение по умолчанию в идентификатор

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' 

как назвать одну функцию для получения идентификационной формы другой таблицы

ответ

1

Я предполагаю, что вы пытаетесь написать пользователя с запросом POST/PUT/PATCH. Ваша проблема в том, что вы используете dehydrate вместо hydrate.

Гидрат предназначен для модификации полезной нагрузки, полученной от пользователя, и будет сохранен.

Дегидрат предназначен для модификации полезной нагрузки, которая будет возвращена пользователю.

Поскольку я предполагаю, что вы пытаетесь записать данные, ваш dehydrate никогда не будет вызван, пока, возможно, после того, как вы уже сохранили своего пользователя.

Docs for the hydrate cycle

+0

Thanx работает для меня – RahulG

+1

рад, что я мог бы помочь! –

Смежные вопросы