首页 > 解决方案 > 在 pythonanywhere 上托管的站点上进行更改时出现问题

问题描述

我在 pythonanywhere 上托管我的博客网站。我在数据库中还有一个订阅者的模型字段。问题是每当我在本地创建新帖子并将其拉入 pythonanywhere bash 控制台时。本地数据库替换生产数据库。这导致丢失用户提供的所有数据。如何阻止某些字段在每次拉取请求时更改?

class Category(models.Model):
    created_on = models.DateTimeField(auto_now_add=True, verbose_name="Created on")
    updated_on = models.DateTimeField(auto_now=True, verbose_name="Updated on")
    title = models.CharField(max_length=255, verbose_name="Title")

    class Meta:
        verbose_name = "Category"
        verbose_name_plural = "Categories"
        ordering = ['title']

    def __str__(self):
        return self.title

class Post(models.Model):
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    text = models.TextField()
    image_file = models.ImageField(upload_to='media', null=True, blank=True)
    image_url = models.URLField(null=True)
    category = models.ForeignKey(Category, verbose_name="Category", on_delete=models.CASCADE, null=True)
    published_date = models.DateTimeField(blank=True, default=timezone.now ,null=True)

    class Meta:
        verbose_name = "Post"
        verbose_name_plural = "Posts"
        ordering = ('-published_date',)

    def get_absolute_url(self):
        return reverse("post_detail",kwargs={'pk':self.pk})

    def __str__(self):
        return self.title


class Comment(models.Model):
    post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='comments')
    name = models.CharField(max_length=80)
    body = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ('-created_on',)

    def __str__(self):
        return 'Comment {} by {}'.format(self.body, self.name)


class Subscribe(models.Model):
    email = models.EmailField()
    subscribed_on = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ('-subscribed_on',)

    def __str__(self):
        return 'Subscribed by {} on {}'.format(self.email, self.subscribed_on)

标签: djangogitdjango-modelspythonanywhere

解决方案


听起来您正在使用 sqlite,并且您已将数据库文件包含在 git 中。这意味着每次您提交(在 PythonAnywhere 或本地)时,您都在用您提交的数据库替换数据库。.gitignore您可以通过将其文件名添加到文件中并将其从存储库中删除(使用git rm --staged)从存储库中排除您的数据库。


推荐阅读