代码之家  ›  专栏  ›  技术社区  ›  Thomas Martres

Django:模型字段中的用户列表

  •  1
  • Thomas Martres  · 技术社区  · 6 年前

    我有一个用户模型和促销代码模型。在后者中,我想列出已经输入并与我在admin视图中输入的其中一个PromoCode匹配的用户。

    我应该在PromoCode模型中使用什么字段类型来创建用户列表,随着时间的推移,我可以在视图中向其中添加更多用户?

    2 回复  |  直到 6 年前
        1
  •  1
  •   jchung    6 年前

    你想要一个 ManyToManyField .

    在模型中:

    class PromoCode(models.Model):
        # Assuming you have other fields here, followed by:
        users = models.ManyToManyField(User, related_name="promocodes")
    

    然后在视图中可以执行以下操作:

    if promocode:
        pc = PromoCode.objects.get(code=promocode) # Get the PromoCode object
        pc.users.add(user) # Add the M2M relationship
    

    ...或者(因为你曾经 related_name )你可以反过来做:

    if promocode:
        pc = PromoCode.objects.get(code=promocode) # Get the PromoCode object
        user.promocodes.add(pc) # Add the M2M relationship
    
        2
  •  0
  •   Ignacio Vazquez-Abrams    6 年前

    你有很多 PromoCode 它可以有很多 User s、 所以你想要一个 ManyToManyField .