2017-08-11 2 views
1

ce qui pourrait le problème avec mon model.py .i ont essayé tout rien ne se passe.et je pense que j'ai défini ma clé étrangère de la bonne façon .peut-il être un problème avec mon définition ou dois-je utiliser memberid.user dans mon foreginkey ou ce qui serait effect.any contribution est la bienvenue.La vérification du système a identifié 3 problèmes (0 silencieux)

Performing system checks... 

Unhandled exception in thread started by <function wrapper at 0x7f6a926d69b0> 
Traceback (most recent call last): 
    File "/usr/lib64/python2.7/site-packages/django/utils/autoreload.py", line 227, in wrapper 
    fn(*args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/django/core/management/commands/runserver.py", line 125, in inner_run 
    self.check(display_num_errors=True) 
    File "/usr/lib64/python2.7/site-packages/django/core/management/base.py", line 405, in check 
    raise SystemCheckError(msg) 
django.core.management.base.SystemCheckError: SystemCheckError: System check identified some issues: 

ERRORS: 
tithe.tithe.memberid: (fields.E300) Field defines a relation with model 'memberid', which is either not installed, or is abstract. 
tithe.tithe.memberid: (fields.E307) The field tithe.tithe.memberid was declared with a lazy reference to 'tithe.memberid', but app 'tithe' doesn't provide model 'memberid'. 
tithe.tithe: (models.E012) 'unique_together' refers to the non-existent field 'IntegerField'. 

System check identified 3 issues (0 silenced). 
Performing system checks... 

Unhandled exception in thread started by <function wrapper at 0x7f3d3ccdc9b0> 
Traceback (most recent call last): 
    File "/usr/lib64/python2.7/site-packages/django/utils/autoreload.py", line 227, in wrapper 
    fn(*args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/django/core/management/commands/runserver.py", line 125, in inner_run 
    self.check(display_num_errors=True) 
    File "/usr/lib64/python2.7/site-packages/django/core/management/base.py", line 405, in check 
    raise SystemCheckError(msg) 
django.core.management.base.SystemCheckError: SystemCheckError: System check identified some issues: 

ERRORS: 
tithe.tithe.memberid: (fields.E300) Field defines a relation with model 'User', which is either not installed, or is abstract. 
tithe.tithe.memberid: (fields.E307) The field tithe.tithe.memberid was declared with a lazy reference to 'tithe.user', but app 'tithe' doesn't provide model 'user'. 
tithe.tithe: (models.E012) 'unique_together' refers to the non-existent field 'IntegerField'. 

ce mon code model.py

from django.utils import timezone 
from django.db import models 

# Create your models here. 
class tithe(models.Model): 
    memberid = models.ForeignKey('User') 
    membername = models.CharField(max_length=45) 
    receitcode = models.CharField(max_length=45) 
    tithes = models.IntegerField() 
    combinedoffering = models.IntegerField() 
    campmeetingoffering = models.IntegerField() 
    churchbuilding = models.IntegerField() 
    conference = models.IntegerField() 
    localchurch = models.IntegerField() 
    funds = models.IntegerField() 
    total = models.IntegerField() 
    created_date = models.DateTimeField(
      default=timezone.now) 
    published_date = models.DateTimeField(
      blank=True, null=True) 

    def publish(self): 
     self.published_date = timezone.now() 
     self.save() 

    def __str__(self): 
     return self.receitcode 

    class Meta: 
     unique_together = ["receitcode","IntegerField"] 
     ordering = ["published_date","membername"] 

Répondre

1

les deux premiers avertissements sont parce que Django ne peut pas trouver le modèle 'User' que vous faites référence à la memberid clé étrangère.

Je vous recommande d'utiliser settings.AUTH_USER_MODEL pour référencer le modèle utilisateur. Cela fonctionnera que vous ayez ou non un modèle utilisateur personnalisé.

memberid = models.ForeignKey(settings.AUTH_USER_MODEL) 

Voir la documentation pour plus d'informations sur referencing the user model.

Notez qu'il est préférable d'appeler le nom de votre champ member. De cette façon, l'instance associée sera member et l'ID associé sera member_id. Pour le moment, l'instance associée est memberid et l'ID associé est memberid_id. L'avertissement final est que vous n'avez pas de champ IntegerField dans le modèle. Si vous voulez que le champ receitcode soit unique par lui-même, puis retirez la ligne unique_together et modifiez le champ à:

receitcode = models.CharField(max_length=45, unique=True) 
+0

puisque je veux que le reçu ait un code unique je l'ai choisi pour être 'unique_together = [" code_reception "]' – harri

+0

J'ai changé 'memberid' à' member_id' et 'membername' pour être' member'je pense que ceci fait sens maintenant – harri

+0

Vous n'avez pas besoin de 'unique_together' pour qu'un seul champ soit unique.Utilisez simplement l'option 'unique' sur le terrain. – Alasdair

1

La ligne ci-dessous

memberid = models.ForeignKey('User') 

est à l'origine du problème. Vous devez lui passer un objet Utilisateur.

Importer le modèle User.

from django.contrib.auth.models import User 

puis

memberid = models.ForeignKey(User) 
+0

que je peux changer de 'memberid - models.ForeignKey (« memberid.User »)' – harri

+0

memberid. L'utilisateur ne travaillera pas. memberid n'a aucun attribut nommé User. Le modèle d'utilisateur par défaut fonctionnera ici. De plus, vous n'avez pas à le passer en chaîne. –

0

Votre ForeignKey doit faire référence à un modèle concret ou d'un modèle abstrait. Puisque vous faites référence en utilisant une chaîne (ce qui signifie que le modèle est abstrait) vous devez déclarer la classe Meta: comme abstraite en énonçant abstract = True

Les relations ainsi définies sur les modèles abstraits sont résolues lorsque le modèle est sous-classé comme un modèle concret et ne sont pas par rapport à la app_label de modèle abstrait:

les informations ci-dessous est de la documentation Django https://docs.djangoproject.com/en/1.11/ref/models/fields/

products/models.py 
from django.db import models 

class AbstractCar(models.Model): 
manufacturer = models.ForeignKey('Manufacturer', on_delete=models.CASCADE) 

# This is what you need to add 
class Meta: 
    abstract = True