これはむしろ単純でなければならないもののようですが、必要な共通のものでなければなりませんが、django - 1つのフォームを使用して2つのモデルインスタンスを作成する
私は、イベントを必要とする複数の他のモデルにリンクされているイベントモデルを持っています。そのため、別のイベントモデルを作成しました。今、私はジョブモデルを作成するときにイベントを作成したいのですが、それを行う方法を理解するのに問題があります。
私の仕事フィールドには、イベントとのOneToOneFieldの関係があり、イベントを作成するときに決定する必要があるのは期間だけです。
単純化されたジョブのモデルは次のようになります。
class Job(models.Model):
customer = models.ForeignKey(Customer)
address = models.CharField(max_length=100, verbose_name="Job Address", null=False, blank=False)
city = models.CharField(max_length=100, verbose_name="City", null=True, blank=True)
state = models.CharField(max_length=2, verbose_name="State", null=True, blank=True)
zip = models.CharField(max_length=5, verbose_name="Zip Code", null=True, blank=True)
# Simply need to set duration
event = models.OneToOneField(Event, on_delete=models.CASCADE, null=False, blank=False)
および簡体イベントモデルは次のようになります。
class Event(models.Model):
TIME_LIST = (
(1, "0:30"),
(2, "1:00"),
(3, "1:30"),
(4, "2:00"),
(5, "2:30"),
(6, "3:00"),
(7, "3:30"),
(8, "4:00"),
(9, "4:30"),
(10, "5:00"),
(11, "5:30"),
(12, "6:00"),
(13, "6:30"),
(14, "7:00"),
(15, "7:30"),
(16, "8:00"),
)
title = models.CharField(max_length=255)
employee = models.ForeignKey(Employee, null=True, blank=True)
start_time = models.DateTimeField(null=True, blank=True)
end_time = models.DateTimeField(null=True, blank=True)
range = RecurrenceField(null=True, blank=True)
duration = models.IntegerField(choices=TIME_LIST, null=True, blank=True)
is_all_day = models.BooleanField(default=False, null=False, blank=False)
私は、ジェネリックCBVsを使用していますので、単に:
class JobCreate(CreateView):
template_name = 'jobs/create.html'
success_url = '/schedule/add/'
form_class = JobCreateForm
def get_success_url(self):
return self.success_url + str(self.object.id)
私のフォームは次のように単純になります:
class JobCreateForm(forms.ModelForm):
class Meta:
model = Job
fields = [
'customer',
'address',
'city',
'state',
'zip',
]
私が必要とするのは、自分のジョブフォーム内で期間を選択するボックスを作ってから、Eventの新しいインスタンスを作成し、そのjob_idを私のJobモデルのイベントフィールドに差し込み、一気に
私はinlineformset_factory
を見ました。私が必要としているように思えますが、エラーが続いているので、間違った考えか、間違っています。私は他の人が示唆しているカップルミックスインを試してみたところ、彼らは過度のように思えて、とにかく私のために働かなかった。
ありがとうございました。それがそれでした。私はそれが単純でなければならないことを知っていた。 –