一对多关系,如何将数据添加到一对多关系字段?

问题描述 投票:0回答:2

如何将数据添加到一对多关系字段?

模型结构在下面给出

我有两个模型,一个是Admin模型,另一个是App模型。

一个应用程序可能有多个管理员(应用程序1- u1,u2 ...作为应用程序管理员)

class Admin(models.Model):
email = models.EmailField()


class App(models.Model):

platform = models.IntegerField()  # 1-iOS, 2-ANDROID
bundle = models.CharField(max_length=255)
admin = models.ForeignKey(Admin, on_delete=models.SET_NULL, null=True)

已尝试将管理员列表保存到应用程序,但在此模型结构下无法正常工作。

django one-to-many
2个回答
0
投票

在您的情况下,管理员只能拥有一个APP,但是一个应用可以由多个管理员拥有。因此,每个管理员都需要引用他/她拥有的应用程序。

您需要引用他/她拥有的应用向管理模型添加外键。

class Admin(models.Model):
    email = models.EmailField()
    app = models.ForeignKey(App, on_delete=models.SET_NULL, null=True)

然后显然您需要从您的应用程序模型中删除admin的外键引用:

class App(models.Model):
    platform = models.IntegerField()  # 1-iOS, 2-ANDROID
    bundle = models.CharField(max_length=255)

0
投票

解决方案:

class Admin(models.Model):
 email = models.EmailField()
 app = models.ForeignKey(App, on_delete=models.SET_NULL, null=True)


class App(models.Model):
 platform = models.IntegerField()  # 1-iOS, 2-ANDROID
 bundle = models.CharField(max_length=255)

现在1个应用可以具有多个管理员

您可以做的另一件事是:

Admin...
...
 app = models.ForeignKey(App, on_delete=models.SET_NULL, null=True, related_name='admins')

...


So now you can query AppObject.admins.all() for admin of that AppObject
© www.soinside.com 2019 - 2024. All rights reserved.