0
我想創建一個費用跟蹤應用程序,每個用戶都可以輸入費用並將其分類到他自己的類別中。下面是我用的模型定義:在Django中沒有重複的外鍵引用設計
from django.db import models
from django.contrib.auth.models import User
class Category(models.Model):
user = models.ForeignKey(User, related_name="my_categories")
name = models.CharField(max_length=50)
class Expense(models.Model):
date = models.DateField()
amount = models.IntegerField()
description = models.TextField()
category = models.ForeignKey(Category)
user = models.ForeignKey(User)
每個類別必須與用戶相關聯,這樣我們就可以顯示每個用戶自己的類別,而進入費用選擇。由於類似的原因,每個費用記錄應該與用戶相關聯。但是在費用的定義中,我們有兩個對用戶模型的引用,一個直接通過'user'字段,另一個通過具有用戶引用的'category'字段。
我相信像這樣的多重引用是一件壞事。有沒有更好的方法來建模?我知道我們可以從類別引用中找到用戶,但似乎是一個迂迴的做法。
你爲什麼認爲這是一件壞事? – Marcin
@Marcin,因爲理論上這些引用中的2個可以指向2個不同的用戶實例,除非數據得到了適當的驗證 – Guruprasad
是的,但是有不同的正常形式的原因不只是第六種正常形式。只要你的應用邏輯合理,這不太可能是個問題。 – Marcin