2016-04-10 17 views
0

私はdjangoを初めて使っています。私は最初のdjangoアプリとしてスポーツベッティングゲームを作ろうとしています。 私は自分の目標を保存し、特定のゲームの目標をデータベースに保存できる形式を使用していますが、そこにユーザー名を挿入する方法が見つかりません。あなたが助けることを願っています!フォームを送信するユーザー名を保存する方法は?

@login_required 
def group_games(request, groupname): 
games = Match.objects.filter(groupname=groupname) 
template = loader.get_template('C:\djangoenvs\\typer\\typer\\templates\group_games.html') 

username = User.get_username() 

for game in games: 
    game_id = get_object_or_404(Match, pk=game) 

form = BetForm(request.POST or None) 
if form.is_valid(): 
    print ('valid form') 
    form.save() 
else: 
    print ('invalid form') 
    print (BetForm.errors) 

context = { 
    'games': games, 
    'groupname': groupname, 
    'form': form, 
} 

User.get_username()次のエラーが発生します:

get_username() missing 1 required positional argument: 'self' 

は、私はその後、(自己)User.get_usernameにそれを変更しようとしましたが:

をここで

は、私の見解であります

name 'self' is not defined 

すべてのお返事ありがとうございます!

+0

ユーザ名= User.get_username() 'やってみてください代わりに'の: ' – jape

答えて

1
User.get_username() 

User記録ではない、完全なテーブルを表します。これがエラーを起こす理由です。

ので削除: username = User.get_username()

をユーザーがアプリケーション内の自分のユーザー名を変更することができるかもしれない、あなたの代わりに、ユーザーへの外部キーを保存することができます。フォームを保存するときは、次のようにします。

if form.is_valid(): 
    print ('valid form') 
    bet = form.save(commit=False) # the bet isn't saved just yet 
    bet.user = request.user # you add the user here 
    print bet.user.username 
    bet.save() # finally save the bet in the database 

ベットモデルでは、ユーザーを記録するフィールドを追加する必要があります。たとえば:

class Bet(models.Model): 
    ... 
    user = models.ForeignKey(to=User, related_name="bets", blank=True, null=True) 
    ... 
+0

はフランソワ@ありがとう)('ユーザ名= request.user.get_usernameを、それが動作します! :) – Patr01

+0

偉大な@ Patr01。さて、あなたは答えを受け入れることができます:) –

+0

@FrançoisConstantあなたはDjangoのフォームを使用していない場合はどうすればいいでしょう、そして、フォームをajaxで送信すると、あなたは 'create()'を使って手動でフォームを保存します。 'bet.save()'よりも。この場合、 'User.objects.create(username = username)'のように何かを行うために提出されたフォームの 'username'をどのように取得すればよいでしょうか – Jam1

関連する問題