Python 在Django中将项目添加到元组中后,是否可以重新启动服务器?

Python 在Django中将项目添加到元组中后,是否可以重新启动服务器?,python,django,list,tuples,restart,Python,Django,List,Tuples,Restart,我有这些元组DOC和COURSE的空列表,当一个产品被保存时,稍后会被添加到他的特定列表中 CATEGORY = ( ('DOC','DOCUMENTAZIONE'), ('COURSE','CORSO'), ) class Product(BaseModel): class Meta: verbose_name=_('Prodotto') verbose_name_plural=_('Prodotti') name = mo

我有这些元组DOC和COURSE的空列表,当一个产品被保存时,稍后会被添加到他的特定列表中

CATEGORY = (
    ('DOC','DOCUMENTAZIONE'),
    ('COURSE','CORSO'),
)

class Product(BaseModel):

    class Meta:
        verbose_name=_('Prodotto')
        verbose_name_plural=_('Prodotti')

    name = models.CharField(_("Nome Prodotto"),max_length=1024, blank = False, null=True)
    category = models.CharField(_("Categoria"),max_length=1024, blank = False, null=True,choices=CATEGORY)


    def __unicode__(self):
        return self.name

DOC = ()
COURSE = ()

try:
    for product in Product.objects.all():
        if product.category == 'DOC':
            DOC = DOC + ((str(product.id), str(product.name.encode('utf-8'))),)
        if product.category == 'COURSE':
            COURSE = COURSE + ((str(product.id), str(product.name.encode('utf-8'))),)
except Exception as e:
    print e
    pass

class ProductOfferDoc(BaseModel):
    class Meta:
        verbose_name = _("Documentazione")
        verbose_name_plural = _("Documentazioni")

    product = models.CharField(max_length=1024, blank=False,null=False, choices=DOC)
    number = models.IntegerField(_('Num.'), default=0, blank=True, null=True)
    price = models.DecimalField(_('Prezzo'),max_digits=10, decimal_places=2,default=0.00,blank=True, null=True )
    offer = models.ForeignKey(Offer, related_name='related_doc')

    def __unicode__(self):
        return self.product

class ProductOfferCourse(BaseModel):

    class Meta:
        verbose_name = _("Corso")
        verbose_name_plural = _("Corsi")

    product = models.CharField(max_length=1024, blank=False,null=False, choices=COURSE)
    number = models.IntegerField(_('Num.'), default=0, blank=True, null=True)
    price = models.DecimalField(_('Prezzo'),max_digits=10, decimal_places=2,default=0.00,blank=True, null=True )
    offer = models.ForeignKey(Offer, related_name='related_course')

    def __unicode__(self):
        return self.product
我的问题是,我需要显示可用的产品,但刚刚添加的新产品在我重新启动服务器之前不会显示。
还有其他方法可以做同样的事情吗?或者存在添加产品时自动重新启动服务器的功能?

您不应该寻找自动重新启动服务器的解决方案,这通常不是一个好主意!。相反,您应该更改代码,这样就不需要重新启动服务器

填充DOC和COURSE元组的代码只执行一次,因为您将其放置在何处。当Django首次加载应用程序时,直接放入models.py文件(即不在函数或类中)的所有内容都会执行一次

查看您的代码,您可能应该用foreignkey替换product CharFields。这样,您根本不需要DOC和COURSE元组——Django将在创建ModelForm时自动生成ForeignKey的选择列表。无论如何,由于许多其他原因,将其他对象的ID保存在CharField中是很奇怪的,也是次优的


如果您真的觉得需要使用一个包含可能选项列表的动态元组,但查看您的代码,在这种情况下,您真的不应该这样做!阅读此问题的答案:。

您不应该寻找自动重启服务器的解决方案,这通常不是一个好主意!。相反,您应该更改代码,这样就不需要重新启动服务器

填充DOC和COURSE元组的代码只执行一次,因为您将其放置在何处。当Django首次加载应用程序时,直接放入models.py文件(即不在函数或类中)的所有内容都会执行一次

查看您的代码,您可能应该用foreignkey替换product CharFields。这样,您根本不需要DOC和COURSE元组——Django将在创建ModelForm时自动生成ForeignKey的选择列表。无论如何,由于许多其他原因,将其他对象的ID保存在CharField中是很奇怪的,也是次优的


如果您真的觉得需要使用一个包含可能选项列表的动态元组,但查看您的代码,在这种情况下,您真的不应该这样做!阅读此问题的答案:。

很抱歉我之前的评论。我没有完全阅读这个问题。很抱歉我之前的评论。我没有完全阅读这个问题。