我创建了一个DECLARE @newname varchar(500), @newmdf varchar(500), @newldf varchar (500), @yearnum int, @prevyear int,
@command1 varchar(max), @command2 varchar(max), @command3 varchar(max), @command4 varchar(max), @command5 varchar(max)
SET @yearnum = YEAR(GETDATE())
SET @prevyear = @yearnum - 2000
SET @newname = 'ugocity' + CONVERT(varchar(4),@prevyear)
SET @newmdf = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\' + @newname +'.mdf'
SET @newldf = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\ugocitylog.ldf'
SET @command1 = 'sp_renamedb ''ugocity2017'', ''' + @newname + ''''
SET @command2 = 'xp_cmdshell ''RENAME "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\ugocity2017.mdf", "' + @newname + '.mdf"'''
SET @command3 = 'xp_cmdshell ''RENAME "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\ugocity1_log.mdf", "ugocitylog.ldf"'''
SET @command4 = 'sp_detach_db @dbname = ''' + @newname + ''''
SET @command5 = 'sp_attach_db @dbname = ''' + @newname + ''' , ' + ' @filename1 = ''' + @newmdf + ''' , ' + '@filename2 = ''C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\ugocitylog.ldf'''
EXECUTE (@command1)
USE [master]
EXECUTE (@command4)
EXECUTE sp_configure 'show advanced options' , 1
RECONFIGURE
EXECUTE sp_configure 'xp_cmdshell' , 1
RECONFIGURE
EXECUTE (@command2)
EXECUTE xp_cmdshell 'RENAME "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\ugocity1_log.mdf", "ugocitylog.ldf"'
EXECUTE sp_configure 'xp_cmdshell' , 0
RECONFIGURE
EXECUTE sp_configure 'show advanced options' , 0
RECONFIGURE
EXECUTE (@command5)
模型,该模型由两个Friend
模型实例组成。首先是单独模型的原因是Profile
模型具有与“朋友”关系相关的特殊属性。
在此Friend
模型中,我还会跟踪Friend
&关系的requester
因为它对我的网站很重要 - 这要求我为每个网站都有一个单独的字段,它们是accepter
模型的FK。以下是两种模式:
Profile
使用此结构,在我想要检索单个class Profile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
null=True, blank=True)
profile_picture = models.ImageField(
upload_to=profile_photo_upload_loc,
blank=True,
null=True,
created = models.DateTimeField(auto_now_add=True)
class Friend(models.Model):
requester = models.ForeignKey(Profile, related_name='is_requester')
accepter = models.ForeignKey(Profile, related_name='is_accepter')
requester_asks = models.CharField(max_length=60, null=True)
accepter_asks = models.CharField(max_length=60, null=True)
参与的Friend
个实例的所有的实例中,我需要进行两个查询:一个用于Profile
的用户,另一个用于个人资料为requester
的用户。这两个查询集的组合为我提供了accepter
所属的所有Friend
关系的总列表 - 在制作消息收件箱时我需要这个总列表。
尝试创建一个消息ListView,我做了一个这样的视图:
Profile
问题在于,虽然它允许我在模板中访问class MessageListView(ListView):
template_name = 'chat/listview.html'
context_object_name = 'friend_list'
def get_queryset(self, *args, **kwargs):
profile = Profile.objects.get(user__username=self.request.user)
as_requester_list = Friend.objects.filter(requester=profile)
as_accepter_list = Friend.objects.filter(accepter=profile)
return list(chain(as_accepter_list, as_requester_list))
个对象属性,但我似乎无法找到一种方便的方法来检索属于的必要Friend
属性朋友关系的另一个参与者。
所以在模板中,我可能会有这样的事情:
Profile
我可以访问{% for friend in friend_list %}
{{friend.requester_asks}} <br />
{% endfor %}
模型的属性,但如何访问其他朋友的Friend
对象)属性,例如Profile
?
单个用户可以是profile_picture
或requester
这一事实使访问accepter
模型属性的能力变得复杂。
提前致谢。
编辑:我意识到这可能需要对模型关系进行重大改变。我对任何建议持开放态度。
答案 0 :(得分:1)
我会利用这样一个事实,即您正在评估视图中的查询集,并使用指向不是原始用户的FK的属性来注释它们。
for friend in as_requester_list:
friend.other_friend = friend.accepter
for friend in as_accepter_list:
friend.other_friend = friend.requester
现在您可以遍历模板中的friend_list,然后访问
{{ friend.other_friend.profile_picture }}
等等。