2016-07-19 7 views
1

Dies wird eine lange Post sein, also ertragen Sie mit mir. Ich denke, ich bin zu der Erkenntnis gekommen, dass ich eine Menge Code, den ich vorher in meinen Modellen geschrieben habe, neu schreiben muss.Soll ich klassenbasierte oder funktionsbasierte Ansichten dafür verwenden?

meine Modelle wie folgt aussehen:

class Word(models.Model): 
    '''Word table for word, and frequency data''' 

    language = models.ForeignKey(Language) 
    name = models.CharField(max_length=50) 
    frequency = models.IntegerField(default=0) 
    rank = models.IntegerField(default=0) 


    def __unicode__(self): 
     value = u'%s' % (self.name) 
     return value 


    def wn_lookup(self): 
     '''Calls the wordnet CLI for self'''  
     ...breaks up the output and returns the definitions as a list of tuples 

    def wiktionary_lookup(self, wiktionary_prefix, driver): 
     ...looks up the definition of the word on wiktionary 
      returns data as a list 

    def define(self, driver, choice, ask_input): 
     ...Prints out a lot of options and asks the user to choose 
      what they want as a definition 

      It then creates objects and calls other methods on a 
      subsequent definitions model 

Beachten Sie, dass die letzte Methode erstellt und ruft Methoden eines subqequent Definitionen Modell.

Ich habe ein paar Modelle, alle mit Methoden, die viel Benutzereingabe erfordern, um die Dateneingabe zu halbieren. Ich glaube, dass ich das dumm gemacht habe und ich sollte sie tatsächlich in die Ansichten aufnehmen, aber ich bin ein bisschen verwirrt darüber, wie das geht.

  1. Sollte ich eine klassenbasierte oder funktionsbasierte Ansicht verwenden?
  2. Ich denke, ich muss tatsächlich Formulare und Vorlagen für alle diese Ansichten schreiben?
  3. Ist es möglich, dass ich alles dort lassen sollte, wo es ist (in Modellen) und nicht in Ansichten?

Antwort

2
  1. können Sie verwenden, was Sie wollen, ist der Nutzen von Class Based Views Vererbung. Sie können Ihre Basisklasse View erweitern und im gesamten Projekt verwenden. Es ist auch ziemlich schnell, Operationen mit Generic Class Based Views zu arbeiten.

  2. Ja, Sie sollten ein Formular für dieses Modell schreiben, um Benutzereingaben bereitzustellen. Django stellt Verknüpfungen für Formulare bereit, die Daten basierend auf einem Modell speichern. Model Forms ordnen Sie automatisch alle Felder in Ihrem Modell mit gleichwertigen Formularfeldern zu.

  3. Django folgt einem Muster mit dem Namen Fat Models, daher ist es völlig in Ordnung, Operationen für ein Modell innerhalb seiner Modelldefinition zu speichern.
Verwandte Themen