'daki geçişler ve verilerle nasıl eklenir Belgedeki konuya dokümanlar veya çevrimiçi başvuruda bulunamıyorum.Varolan ManyToManyField seçeneğine, django
Çok fazla var olan bir ilişkim var.
class Books(models.Model):
name = models.CharField(max_length=100)
class Authors(models.Model):
name = models.CharField(max_length=100)
books = models.ManyToManyField(Books)
Bu, geçişlere ve verilere sahiptir. Şimdi pek çok ilişkiye sahip olan tabloya bir tane daha fazla alan eklemek için opsiyon yoluyla kullanmam gerekiyor. Ben göçler çalıştırdığınızda
class Authorship(models.Model):
book = models.ForeignKey(Books)
author = models.ForeignKey(Authors)
ordering = models.PositiveIntegerField(default=1)
class Authors(models.Model):
name = models.CharField(max_length=100)
books = models.ManyToManyField(Books, through=Authorship)
, django Authorship
modeli için taze göç yaratır. Authorship
tablosuna ordering
tablosunu ekleyerek ve Authors
tablosunda books
sütununu değiştirerek el ile geçiş dosyası oluşturmaya çalıştım ancak bazı geçiş sorunları alıyorum.
operations = [
migrations.AddField(
model_name='authorship',
name='ordering',
field=models.PositiveIntegerField(default=1),
),
migrations.AlterField(
model_name='authors',
name='books',
field=models.ManyToManyField(to='app_name.Books', through='app_name.Authorship'),
),
]
geçirmek çalışıyor
, ben böylece hatalar etkilenir ve diğer şeyler vardır bahseKeyError: ('app_name', u'authorship')
verir.
Hangi şeyler eksik? Bununla çalışmak için başka bir yaklaşım var mı?
Bu, veri geçişlerini gerektirecektir, aksi halde mevcut verileri kaybederim, hayır? – chhantyal
Evet, ne zamandan beri alanını kaldıracaktır. Verileri kaybetmezseniz, 'kitapları' kaldırmayın, sadece 'kitap' ekleyin. Ardından, verileri "kitaplar" dan "SQL'e" aktarın. – pista329