django - 在 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)
解决方案
听起来您正在使用 sqlite,并且您已将数据库文件包含在 git 中。这意味着每次您提交(在 PythonAnywhere 或本地)时,您都在用您提交的数据库替换数据库。.gitignore
您可以通过将其文件名添加到文件中并将其从存储库中删除(使用git rm --staged
)从存储库中排除您的数据库。
推荐阅读
- error-handling - 如何展平嵌套的结果?
- c# - 获取 CSRF 令牌以强制登录,但它不返回任何内容 - ArgumentOutOfRangeException:长度不能小于零
- git - 从 Git 历史记录中删除大文件
- ansible - 有没有办法让角色在戏剧中成功之前?
- angular - 在Angular中使用ngClass修改面包屑叶子的CSS参数
- javascript - uncaughtExceptions 发送统计信息
- c# - ML.net 中的多分类
- sql - SQL 查找 10 月促销商店销售额最高的一天
- dictionary - Flutter & Cloud_Firestore。将文档转换为地图
- selenium - Selenium 4 中相对定位器的实时用例是什么?