【问题标题】:Django usage of ForeignKeyForeignKey的Django使用
【发布时间】:2022-01-26 13:54:32
【问题描述】:

我有这个微票“系统”

\\models.py

class Ticket(models.Model):
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        default=None,
        null=True,
        on_delete=models.CASCADE,
    )
    title = models.CharField(max_length=200)
    description = models.TextField()
    creator_adress = models.GenericIPAddressField(null=True)
    start_date = models.DateTimeField(default=timezone.now)
    ticket_waiting = models.BooleanField(default=True)
    ticket_solved = models.BooleanField(default=False)
    reopened_counter = models.IntegerField(default=0)
    ...

到目前为止,用户只能发送一条消息(当用户打开工单时),该消息将转发给管理员。但是管理员和用户还不能在工单下来回写任何其他消息。

如果您为此使用新模型,像这样连接到每张票?

class TicketMessages(models.Model):
    ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE)
    admin_message = models.TextField()
    user_message = models.TextField()

实现这一点的最佳方法是什么?

非常感谢:>

【问题讨论】:

    标签: python django


    【解决方案1】:

    您可以通过以下方法有效地实现这一目标,

    为工单消息创建模型:-

    class TicketMessages(models.Model):
        ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE)
        message = models.TextField() #this will be the message
        message_by = # you can use a foreign key or a choices option to select between the admin or user
        reply_to = models.ForeignKey("self") # if this is a reply to existing message
    

    根据我对您问题的理解,这是一种很好且有效的解决方案....如果您需要其他或更多内容,请告诉我,我很乐意为您提供帮助。

    谢谢!

    【讨论】:

    猜你喜欢
    • 2012-07-23
    • 2014-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多