Как найти правильные отношения между моими таблицами? - PullRequest
0 голосов
/ 10 октября 2019

Я пробую новый социальный медиа-проект django, в котором есть Пользователь, Статус и Комментарий. Взаимосвязь между ними такова, что пользователь имеет отношение к статусу, пользователь имеет отношение к комментарию, а также существует связь между статусом и комментарием.

Таким образом, чтобы достичь этого, я построил четыре таблицы, то есть пользователь,Комментарий, Статус и UCSModel. Где UCSModel - таблица, которая имеет внешние ключи остальных трех таблиц. UCSModel больше похож на таблицу отношений, состоящую из всех идентификаторов

Итак, вот мой models.py

from django.db import models

class User(models.Model):

    username = models.CharField(max_length=50, unique=True)
    email = models.CharField(max_length=200)
    password = models.CharField()

    def __str__(self):
        return self.username


class Comment(models.Model):

    comment = models.CharField()

    def __str__(self):
        return self.comment

class Status(models.Model):

    status = models.CharField()

    def __str__(self):
        return self.status

class USCRelation(models.Model):

    user = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
    comment = models.ForeignKey(Comment, null=True, on_delete=models.CASCADE)
    status = models.ForeignKey(Status, null=True, on_delete=models.CASCADE)

Будучи новичком в Django, я хотел знать, есть ли лучший способ построенияотношения между таблицами. Особенно, когда все три таблицы взаимосвязаны друг с другом, как в моем случае выше.

1 Ответ

0 голосов
/ 10 октября 2019

Найдите приведенный ниже дизайн БД, это поможет вам оптимизировать ваши запросы:

from django.db import models

class User(models.Model):

    username = models.CharField(max_length=50, unique=True)
    email = models.CharField(max_length=200)
    password = models.CharField()

    def __str__(self):
        return self.username

class Status(models.Model):

    status = models.CharField()

    def __str__(self):
        return self.status

class Comment(models.Model):

    comment = models.CharField()
    status = models.ForeignKey(Status, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.comment

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...