Belirtilen veritabanı ve model şemasıyla bulduğum belirli bir uygulama geliştiriyorum. Django sürüm 1.8.2 kullanıyorum. Aşağıda bir sorun sunulmuştur. Gereksiz alanlar atlanmış, örnek isimler için örnek isimler icat edilmemiştir çünkü açıklayamam. Bir projeyi Uzun bir süre sonra bu özel durumda aynı adı A'nın çeşitli, ancak farklı yabancı anahtar B ile olabileceğini ihtimaliniBirincil anahtar nasıl oluşturulur Django'da iki alandan oluşur?
class B (models.Model):
name = models.CharField(max_length=100)
class A (models.Model):
name = models.CharField(max_length=100, primary_key=True)
related_name = models.ForeignKey(B, null=True, blank=True)
aşağıdaki modeller A düşünün ve B., ben istiyorum İki alandan oluşan birincil anahtar "A" modeli: isim ve ilgili isim. Böyle bir anahtar nasıl oluşturulur django'da iki alandan oluşur?
yerine 'id' Django varsayılan olarak' A' birincil anahtarı değiştirmek mümkün mü kullanabilir? Bu bariz düzeltme gibi görünüyor. –
Merhaba :-) Cevabınız için teşekkürler. Bu iyi bir çözüm, ama benim durumumda birçok tablo bir yabancı anahtar tablosu "A" olarak var ve varsayılan kimliği değiştirmek gerçekten büyük bir çaba olacaktır. Ayrıca, 'A.objects.get (pk = "bir şey")' gibi sorguları kullanan ve birincil anahtarın türünü değiştiren çok fazla kod, çok fazla çalışma gerektirir. Bu nedenle anahtar tipini değiştirmeyen bir çözüm arıyorum. Üssün çok fazla yılı var. –
Tamam. Bu durumda bunun djangoda çözülebileceğini sanmıyorum. Django, her örnek için tek ve benzersiz bir birincil anahtar gerektirir. Kompozit bir birincil anahtar kullanabilmeniz bile, pk'deki alanlardan birinin null olmayan bir yabancı anahtar olduğunda iyi bir fikir olup olmadığından emin değilim. –