2016-07-19 4 views
1

Это будет длинный пост, так что медведь со мной. Я думаю, я пришел к пониманию, что мне нужно переписать много кода, который я ранее писал в своих моделях.Должен ли я использовать представления на основе классов или функций?

мои модели выглядеть следующим образом:

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 

Обратите внимание, что последний метод создает и вызывает методы модели определений subqequent.

У меня есть несколько моделей, все из которых имеют методы, требующие большого количества ввода пользователем для полуавтоматизации ввода данных. Я считаю, что я сделал это глупо, и я должен фактически добавить их в представления, но я немного смущен о том, как это сделать.

  1. Должен ли я использовать представление на основе класса или функции?
  2. Я думаю, что я должен писать формы и шаблоны для всех этих просмотров?
  3. Возможно ли, что я должен оставить все, где это (в моделях), и не поместить его в виде?

ответ

2
  1. Вы можете использовать то, что вы хотите, благо Class Based Views является наследование. Вы можете расширить свой базовый класс View и использовать его во всем своем проекте. Кроме того, довольно быстро получить работу с Generic Class Based Views.

  2. Да, вы должны написать форму для этой модели, чтобы предоставить пользователю ввод. Django предоставляет ярлыки для форм, которые сохраняют данные на основе модели. Model Forms автоматически отображает все поля в вашей модели с равномерными полями формы.

  3. Django следует шаблону Fat Models, поэтому вполне можно хранить операции для модели в рамках определения ее модели.
Смежные вопросы