私はdjangoを使用してプログラムを作成しています。私の問題はビルドモデルと混同されています。 私は、ユーザーとデバイスである別々のアプリケーションで2つのモデルを作っています。ユーザーは1対nのデバイスを借用することができますが、各デバイスは1人のユーザーだけが保持できます。次に、ユーザークラスでは、デバイスクラス(彼が借りたすべてのデバイス)を格納できるborrowed_device属性が必要です。デバイスクラスでは、このデバイスを借りた人を追跡するのに役立つ属性が必要です。モデルを正しく構築するには?
私のコードは次のとおりです。私はどのように記述すればよいのでしょうか、アドバイスをいただければ幸いです。
ユーザー/モデル
from django.db import models
from device.models import Device
class User(models.Model):
username = models.CharField(max_length=20)
password = models.CharField(max_length=20)
borrowed_device = models.ForeignKey('Device', on_delete=models.CASCADE(), related_name='borrowed_device')
# id = models.IntegerField()
class Meta:
ordering = ('username',)
デバイス/モデル
from django.db import models
from user.models import User
class Device(models.Model):
DEVICE_TYPE = {('chemistry', 'chemistry'), ('physics', 'physics'), ('computer', 'computer'), ('biology', 'biology')}
device_id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=20)
type = models.CharField(max_length=20, choices=DEVICE_TYPE)
bought_in_time = models.DateTimeField(auto_now_add=True)
last_used_time = models.DateTimeField(auto_now=True)
# number = models.IntegerField(default=1)
status = models.BooleanField(default=False)
user = models.ForeignKey(User, on_delete=models.CASCADE(), related_name='user')
class Meta:
ordering = ('type', '-bought_in_time')
def __str__(self):
return self.name
# def get_absolute_url(self):
# return reverse('')
ありがとう、私はまだユーザーのボロウリングデバイスの履歴をどのように保存することができますか?人々はデバイスa1を借用し、借用履歴を属性に保存する方法は?彼が借りたすべてのデバイスを意味します。私はそれを保存するためにユーザーにリストを作ってください。 – Richard
@リチャード、履歴を維持したい場合。デバイスの履歴/ログを表すモデルに異なる列(manytomany)を設定する必要があります。あなたは単にその列を追加するだけで、それから削除することはできません。また、2つの列(ユーザー、デバイス)を持つ別のモデル(HISTORY)を作成し、そのモデルに保存することもできます。 –