gpt4 book ai didi

Django Tastypie : post value in multiple models to a single Tastypie Resource

转载 作者:行者123 更新时间:2023-12-04 20:35:49 25 4
gpt4 key购买 nike

第一个型号:

class Profile(models.Model):

username = models.CharField(
_('username'),
max_length=150,
unique=True,
help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'),
validators=[
validators.RegexValidator(
r'^[\w.@+-]+$',
_('Enter a valid username. This value may contain only '
'letters, numbers ' 'and @/./+/-/_ characters.')
),
],
error_messages={
'unique': _("A user with that username already exists."),
},
)
password = models.CharField(max_length=12, default='123456')
first_name = models.CharField(_('first name'), max_length=30, blank=True)
last_name = models.CharField(_('last name'), max_length=30, blank=True)
email = models.EmailField(_('email address'), blank=True)
date_joined = models.DateTimeField(_('date joined'), default=timezone.now)

第二个模型:
class UserEbiz(models.Model):
user_id = models.ForeignKey('Profile')
password = models.CharField(max_length=12, default='123456')

美味资源:
class ProfileResources(ModelResource):
id = fields.CharField(attribute='id')

class Meta:
queryset = Profile.objects.all()
resource_name = 'profile'

filtering = {
"id": ALL,
}

我想创建一个函数,该函数仅使用一种资源即可同时将值保存到两个表中。我的问题是如何使用 ProfileResources 将值(value)发布到 Profile 和 UserEbiz 模型中。

最佳答案

@sean-hayes 答案很好,但如果您真的想要 Post数据在 ProfileResource而不是 UserEbiz第一次更改 ProfileResource

class ProfileResource(ModelResource):
ebiz = fields.ToManyField(UserEbizResource, 'userebiz_set', readonly=True)

通知 第一 你有一个 ForeignKeyProfile .所以是 1:MProfileUserEbiz .

第二 我已经设置 readonly为真,因为我要处理 UserEbiz数据本人。但是,如果您有 models.ForeignKey('Profile', blank=True, null=True)那么就像创建 M2M数据所以只需删除 readonly属性,你都准备好了。

所以你可以 override obj_create处理 ebiz自己的数据。代码可能看起来像
def obj_create(self, bundle, **kwargs):
ebiz = bundle.data.pop('ebiz', None)
bundle = super(ProfileResource, self).obj_create(bundle, **kwargs)
if not ebiz:
return bundle

ebiz.update(user_id=bundle.obj) # change it to user in model and here
ebiz_res = UserEbizResource()
ebiz_bundle = ebiz_res.build_bundle(data=ebiz)
ebiz_res.obj_create(ebiz_bundle)
return bundle

关于 Django Tastypie : post value in multiple models to a single Tastypie Resource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35906786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com