2017-11-23 13 views
0
나는이 같은 모델 구조가 있다고 가정

:장고 데이터베이스 : 저장 새 항목 Wtihout 저장 그것의 ForeignKeys를 먼저

class Cheese(Model.models): 
    type = models.CharField(max_length='50') 

class Sauce(Models.models): 
    type = models.CharField(max_length='50') 

class Pizza(Models.models): 
    cheese = models.ForeignKey(Cheese) 
    sauce = models.ForeignKey(Sauce) 

class PizzaOrder(Models.model): 
    pizza = models.ForeignKey(Pizza) 
    time = models.DateTimeField(auto_now_add=True) 

가 지금은 PizzaOrder에 대한 새 항목을 만들려면,이 주어진 -하지만 난 그렇게하지를 치즈, 소스 또는 피자의 복제본을 원한다면 피자가 방금 주문되었음을 나타낼 수 있습니다.

이 경우 오류가 발생하며, 이에 대해서는 here으로 설명합니다.

이 문제를 어떻게 피할 수 있습니까? 필자는 피자 오더 (PizzaOrder)를 새로 구입할 때마다 오브젝트 피자를 복제하고 싶지 않습니다. 중복 치즈, 소스와 피자를 만들지 않도록하려면

+0

어떻게'피자 = models.ForeignKey (피자, 독특한 = 참)'에 대해. 다른 모델 필드를'unique '로 설정할 수도 있습니다 –

답변

0

, 당신은 다음과 같이 수행 할 수 있습니다

class Cheese(Model.models): 
    type = models.CharField(max_length='50', unique=True) 

class Sauce(Models.models): 
    type = models.CharField(max_length='50', unique=True) 

class Pizza(Models.models): 
    cheese = models.ForeignKey(Cheese) 
    sauce = models.ForeignKey(Sauce) 

    class Meta: 
     unique_togather=(("cheese", "sauce"),) 
+0

고유 속성을 사용하여 데이터베이스가 파손되었습니다 ... 오류 가져 오는 중'django.db.utils.IntegrityError : UNIQUE 제약 조건을 적용하지 못했습니다 : 하지만, 그렇게하지 않았기 때문에, 나는 그들을 다시 넣고 그들의 가치가 모두 "틀린"것인지 확인했습니다 ... 여전히 오류가 있습니다, 나는 어떤 종류의 캐싱 메커니즘이 있다고 추측합니다. – user8951490

+0

아마도 DB에 중복 값을 저장하려고했거나 테이블에 중복 값이 ​​포함되어있을 수 있습니다 (이 경우 DB에서 중복 값을 제거해보십시오). – ruddra