2013-05-07 3 views
0

Quand je lance "python manage.py runserver", les 2 messages d'erreur suivants sont imprimés 4 fois:erreur Django: "accesseur pour des affrontements sur le terrain avec un domaine connexe"

transcription.treatment: Accessor for field 'treatment_ptr' clashes with related field 'Treatment.treatment'. Add a related_name argument to the definition for 'treatment_ptr'. 
transcription.treatment: Reverse query name for field 'treatment_ptr' clashes with related field 'Treatment.treatment'. Add a related_name argument to the definition for 'treatment_ptr'. 

est en dessous de mon code. En commun/models.py:

class Treatment(models.Model): 
    code = RandomCharField(length=6) 
    experiment_id = models.CharField(max_length = 10, null = True) 


    base_pay = models.PositiveIntegerField(default=20) 

    def was_started_recently(self): 
     expiry_time = timedelta(minutes = 5) 
     if datetime.now() - self.time_started < expiry_time: 
      return True 

class OfferTreatment(Treatment): 
    max_offer_amount = models.PositiveIntegerField(default=50) 
    increment_amount = models.PositiveIntegerField(default=5) 

    def offer_choices(self): 
     return range(0, self.max_offer_amount + 1, self.increment_amount) 

    def is_valid_offer(amount): 
     return amount in self.offer_choices() 

    class Meta: 
     abstract = True 

Dans les jeux/transcription/models.py:

class Treatment(shared.models.OfferTreatment): 
    short_name = 'tr' 
    long_name = 'Transcription' 

Toutes les suggestions?

+1

est-ce le modèle complet? – karthikr

+0

Oui, c'est ça. – RexE

Répondre

1

Vous avez deux modèles appelés Traitement. Et bien que OfferTreatment soit abstrait, la version partagée de Treatment ne l'est pas. Vous devriez probablement marquer cela comme abstrait, et aussi le renommer en quelque chose comme BaseTreatment. Alternativement, vous pouvez faire de la transcription.Traiter dans un modèle de proxy.

Questions connexes